package com.weiyi.portal.modules.pms.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.weiyi.portal.dto.PmsProductDetailDTO;
import com.weiyi.portal.modules.pms.mapper.PmsProductAttributeValueMapper;
import com.weiyi.portal.modules.pms.model.PmsProductAttribute;
import com.weiyi.portal.modules.pms.mapper.PmsProductAttributeMapper;
import com.weiyi.portal.modules.pms.model.PmsProductAttributeCategory;
import com.weiyi.portal.modules.pms.model.PmsProductAttributeValue;
import com.weiyi.portal.modules.pms.service.PmsProductAttributeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.weiyi.portal.modules.pms.service.PmsProductAttributeValueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * <p>
 * 商品属性参数表 服务实现类
 * </p>
 *
 * @author PZC
 * @since 2022-10-13
 */
@Service
public class PmsProductAttributeServiceImpl extends ServiceImpl<PmsProductAttributeMapper, PmsProductAttribute> implements PmsProductAttributeService {
    @Autowired
    PmsProductAttributeValueService pmsProductAttributeValueService;
    @Autowired
    PmsProductAttributeValueMapper pmsProductAttributeValueMapper;

    /**
     * 获取商品属性
     * @param id
     * @return
     */
    @Override
    public List<PmsProductAttribute> list(Long id) {
        QueryWrapper<PmsProductAttribute> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(PmsProductAttribute::getProductAttributeCategoryId, id)
                .orderByDesc(PmsProductAttribute::getSort);
       return list(queryWrapper);
    }

    /**
     * 获取对应商品属性值
     * @param id
     * @return
     */
    @Override
    public List<PmsProductAttributeValue> getAttributeValues(Long id) {
        QueryWrapper<PmsProductAttributeValue> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(PmsProductAttributeValue::getProductAttributeId, id);
        return pmsProductAttributeValueService.list(queryWrapper);
    }

    /**
     * 获取商品属性分类
     * @param cid
     * @return
     */
    @Override
    public List<PmsProductAttributeCategory> getAttributeCateByCid(Long cid) {
        List<PmsProductAttributeCategory> attributesCate = this.baseMapper.getAttributeCateByCid(cid);
        return attributesCate;
    }

    /**
     * 返回商品细节，controller调用，获取商品属性分类——》获取商品属性——》获取商品属性值
     * @param cid
     * @return
     */
    @Override
    public List<PmsProductDetailDTO> getDetail(Long cid) {
//        PmsProductDetailDTO detailDTO = new PmsProductDetailDTO();
//
//        List<PmsProductAttributeCategory> attributeCate = getAttributeCateByCid(cid);
//        for(PmsProductAttributeCategory attributeCategory:attributeCate){
//            List<PmsCateDTO> cates = new ArrayList<>();
//
//            List<PmsProductAttribute> attributes = list(attributeCategory.getId());
//            for(PmsProductAttribute attribute : attributes){
//                List<PmsProductAttributeValue> values = getAttributeValues(attribute.getId());
//                cates.add(new PmsCateDTO(attribute.getName(), values));
//            }
//
//            detailDTO.setCates(cates);
//        }
        List<PmsProductDetailDTO> detailDTOS = pmsProductAttributeValueMapper.getDetail(cid);
        return detailDTOS;
    }


}
